import { observe } from './observer';
import { proxy } from './utils';

export function initState(vm) {
  const options = vm.$options;

  options.props && initProps(vm);
  
  options.data && initData(vm);

  options.methods && initMethods(vm);

  options.computed && initComputed(vm);

  options.watch && initWatch(vm);
}

function initProps(vm) {};

function initData(vm) {
  let data = vm.$options.data;

  vm.$data = data = typeof data === 'function'? data.call(vm): data || {};

  for (let key in data) {
    proxy(vm, '$data', key);
  }

  observe(data);
}

function initMethods(vm) {}

function initComputed(vm) {}

function initWatch(vm) {}